Python 字符串方法概览
作者:Ruben Geert van den Berg,源自 SPSS Python 基础
字符串操作是任何编程语言的重要组成部分。在 Python 中,这些操作被称为字符串方法(string methods)。下表提供了一个快速概览。
Python 字符串方法概览
功能 | Python | 返回值 | Python 示例 | SPSS 示例 |
---|---|---|---|---|
提取子字符串(Extract Substring) | [] |
字符串(String) | myString[0] |
compute str01 = char.substr(str01,1,1). |
连接字符串(Concatenate 2(+) Strings) | + 或 += |
字符串(String) | myString + myString |
compute str01 = concat(str01,str02). |
查找子字符串最左侧出现的位置(Find Leftmost Occurrence of Substring) | find |
整数(Integer) | myString.find('a') |
compute pos = char.index(str01,'a'). |
查找子字符串最右侧出现的位置(Find Rightmost Occurrence of Substring) | rfind |
整数(Integer) | myString.rfind('a') |
compute pos = char.rindex(str01,'a'). |
替换字符(Replace 1(+) Characters) | replace |
字符串(String) | myString.replace('a','b') |
compute str01 = replace(str01,'a','b'). |
获取字符串长度(Find Length of String) | len |
整数(Integer) | len(myString) |
compute len01 = char.length(str01). |
转换为小写(Lowercase String) | lower |
字符串(String) | myString.lower() |
compute str01 = lower(str01). |
转换为大写(Uppercase String) | upper |
字符串(String) | myString.upper() |
compute str01 = upper(str01). |
首字母大写(Capitalize String) | capitalize |
字符串(String) | myString.capitalize() |
(无) |
移除左侧字符(Remove Characters from Left Part of String) | lstrip() |
字符串(String) | myString.lstrip() |
compute str01 = ltrim(str01). |
移除右侧字符(Remove Characters from Right Part of String) | rstrip() |
字符串(String) | myString.rstrip() |
compute str01 = rtrim(str01). |
移除两侧字符(Remove Characters from Left and Right Part of String) | strip() |
字符串(String) | myString.strip() |
(无) |
字符串转换为整数(Convert String to Integer) | int |
整数(Integer) | int(myString) |
compute num01 = number(str01,comma16). (或使用 ALTER TYPE.) |
分割字符串为列表(Split String into Python List) | split |
列表(List) | myString.split(' ') |
(无) |
检查字符串是否以…开始(Check if String Starts With…) | startswith |
布尔值(Boolean) | myString.startswith("var") |
(无) |
检查字符串是否以…结束(Check if String Ends With…) | endswith |
布尔值(Boolean) | myString.endswith("var") |
(无) |
左侧填充零(Left Pad String with Zeroes) | zfill |
字符串(String) | myString.zfill(3) |
compute str01 = char.lpad(str01,3). |
Python 中提取子字符串
在 Python 中,我们使用方括号 []
提取子字符串,方括号内可以包含一个或两个索引以及冒号。例如:
myString[0]
提取第一个字符;myString[1:]
提取第二个到最后一个字符;myString[:4]
提取第一个到第四个字符;myString[1:3]
提取第二个到第三个字符;myString[-1]
提取最后一个字符。
Python 子字符串示例
***SPSS PYTHON SUBSTRING EXAMPLES.
**
begin program python3.= 'abcdefghij'
myString print(myString[0]) # a
print(myString[1:]) # bcdefghij
print(myString[:4]) # abcd
print(myString[1:3]) # bc
print(myString[-1]) # j
end program.
在 Python 中连接字符串
基本上,+
连接两个或多个字符串。此外,myString += 'a'
是 myString = myString + 'a'
的简写形式,我们经常使用它来构建 SPSS 语法。
Python 连接示例
***1. CONCATENATE WITH "+".
**
begin program python3.= 'abc'
myString print(myString + 'def') #abcdef
end program.
***2. CONCATENATE WITH "+="
**
begin program python3.= 'abc'
myString for i in range(5):
+= str(i)
myString print(myString) #abc01234
end program.
注意:在这些示例中,我们实际上创建了新的字符串对象,而不是真正更改现有的字符串对象。这是因为字符串在 Python 中是 不可变的。
查找子字符串最左侧出现的位置
在 Python 中,使用 find
检索单个或多个字符子字符串的位置。请记住以下几点:
- Python 完全区分大小写;
- Python 对象的索引从零开始。
因此,我们示例中字符的索引如下所示。
Python Find 示例
***FIND LEFTMOST OCCURRENCE OF SUBSTRING.
**
begin program python3.= 'Cycling in the mountains is fun.'
myString print(myString.find('c')) # 2
print(myString.find('in')) # 4
end program.
查找子字符串最右侧出现的位置
在 Python 中,rfind
返回字符串中某个子字符串最右侧出现位置的索引(同样从零开始)。下面的语法展示了几个示例。
***FIND RIGHTMOST OCCURRENCE OF SUBSTRING.
**
begin program python3.= 'Cycling in the mountains is fun.'
myString print(myString.rfind('i')) # 25
print(myString.rfind('in')) # 21
end program.
在 Python 字符串中替换字符
在 Python 中,使用 replace
替换字符串中的字符,如下所示。
***Replace one or more characters in string.
**
begin program python3.= 'The cat caught the mouse in the living room.'
myString print(myString.replace('a','')) #The ct cught the mouse in the living room.
print(myString.replace('the','a')) # The cat caught a mouse in a living room.
end program.
注意:在第 5 行,我们将所有 ‘a’ 替换为空字符串。也就是说,我们将从示例句子中删除所有 ‘a’。
获取 Python 字符串的长度
在 Python 中,len
返回某个字符串对象的字符数(不是字节数)。
***FIND LENGTH OF STRING.
**
begin program python3.= 'abcde'
myString print(len(myString)) # 5
end program.
将 Python 字符串转换为小写
要将 Python 字符串转换为小写,请使用 lower
,如下所示。
***LOWERCASE STRING.
**
begin program python3.= 'SPSS Is Fun!'
myString print(myString.lower()) # spss is fun!
end program.
将 Python 字符串转换为大写
在 Python 中,upper
将字符串对象转换为大写。
***UPPERCASE STRING.
**
begin program python3.= 'This is Some Title'
myString print(myString.upper()) # THIS IS SOME TITLE
end program.
Python 字符串对象首字母大写
在 Python 中,“首字母大写(capitalizing)”意味着返回一个字符串,其中第一个字符为大写,所有其他字符为小写——即使它们在原始字符串中是大写的。
***CAPITALIZE STRING.
**
begin program python3.= 'aBcDeF'
myString print(myString.capitalize()) # Abcdef
end program.
移除字符串左侧的字符
在 Python 中,仅使用 lstrip()
即可移除字符串开头的空格和制表符。可以通过在括号内指定任何其他前导字符来移除它(下面的第 12 行)。
***REMOVE WHITESPACE FROM START OF STRING.
**
begin program python3.= ' left padding removed'
myString print(myString.lstrip()) # left padding removed
end program.
***REMOVE ASTERISKS (*) FROM START OF STRING.
**
begin program python3.= '****left padding removed'
myString print(myString.lstrip('*')) # left padding removed
end program.
移除字符串右侧的字符
rstrip
方法与 lstrip
的工作方式相同,但移除字符串右侧的字符。
***REMOVE WHITESPACE FROM END OF STRING.
**
begin program python3.= 'right padding removed '
myString print(myString.rstrip()) # right padding removed
end program.
***REMOVE ASTERISKS (*) FROM END OF STRING.
**
begin program python3.= 'right padding removed****'
myString print(myString.rstrip('*')) # right padding removed
end program.
移除字符串左侧和右侧的字符
strip
基本上结合了 Python 的 lstrip
和 rstrip
方法。
***REMOVE WHITESPACE FROM END OF STRING.
**
begin program python3.= ' left and right padding removed '
myString print(myString.strip()) # left and right padding removed
end program.
***REMOVE ASTERISKS (*) FROM END OF STRING.
**
begin program python3.= '****left and right padding removed****'
myString print(myString.strip('*')) # left and right padding removed
end program.
遗憾的是,此方法没有 SPSS 等效项,这就是为什么我们有时在旧语法中看到 LSTRIP(RSTRIP(MYSTRING))
的原因。请注意,在 SPSS Unicode 模式下,通常会自动从字符串值中删除空格。
将字符串转换为整数
在 Python 中,int
将字符串转换为整数。如果字符串包含除数字之外的任何内容,它将崩溃并显示错误。
***CONVERT STRING TO INTEGER.
**
begin program.= '123'
myString = int(myString)
myInt print(type(myInt)) # <type 'int'>
print(myInt) # 123
end program.
将 Python 字符串分割为列表对象
下面的示例将字符串分割为 Python 列表(list)对象。split
始终需要分隔符(separator)。可以使用列表推导式(list comprehension)分割不带任何分隔符的字符串(下面的第 14 行)。
***SPLIT STRING INTO PYTHON LIST OBJECT.
**
begin program python3.= 'A A C A B C'
myString = myString.split(' ')
myList print(type(myList)) # <type 'list'>
print(myList) # ['A', 'A', 'C', 'A', 'B', 'C']
end program.
***SPLIT STRING INTO PYTHON LIST WITHOUT SEPARATOR.
**
begin program python3.= 'AACABC'
myString = [i for i in myString]
myList print(myList) # ['A', 'A', 'C', 'A', 'B', 'C']
end program.
检查字符串是否以…开始
***EVALUATE IF STRING STARTS WITH GIVEN SUBSTRING.
**
begin program python3.= 'abcdef'
myString print(myString.startswith('abc')) # True
print(myString.startswith('bcd')) # False
end program.
***TYPICAL USE OF STARTSWITH().
**
begin program python3.if myString.startswith('a'):
print("First character is 'a'.")
else:
print("First character is not 'a'.")
end program.
注意:True
(真) 和 False
(假) 是 布尔值 的 2 个可能值。 当我们只想运行一个 Python if
语句时,我们经常使用它们。
检查字符串是否以…结束
***EVALUATE IF STRING ENDS WITH GIVEN SUBSTRING.
**
begin program python3.= 'abcdef'
myString print(myString.endswith('f')) # True
print(myString.endswith('e')) # False
end program.
左侧填充零
在 Python 中,zfill(3)
在字符串的左侧填充零,直到总长度为 3 个字符。 我们这样做主要是为了按字母顺序对数字进行排序:002 排在 010 之前,依此类推。
***LEFT PAD STRING WITH ZEROES.
**
begin program python3.= '1'
myString print(myString.zfill(3)) # 001
= '10'
myString print(myString.zfill(3)) # 010
end program.
以上就是 Python 字符串方法的大致内容。 希望本教程对您有所帮助。